<?php
	defined('INDEX') or die ('Acesso direto não permitido');
	
	class PageFactory
	{
		function PageFactory()
		{
			
		}
		
		/**
		 * Returns an Page object instance.
		 * @param SEO $seo
		 * @return Page $page
		 */
		public function get_page_factory ($pagina)
		{
			require_once( dirname(__FILE__)."/../components/Factory.class.php" );
			
			$dao = Factory::get_adodb();
			$query = "SELECT p.* FROM pagina p WHERE LOWER(p.nome_pagina) = LOWER('$pagina')";
			
			$page_object = $dao->get_sql_object($query);
			
			if(is_object($page_object))
			{
				$page_dir = dirname(__FILE__)."../../gui/";

				if(file_exists($page_dir.$page_object->classe.".class.php"))
				{
					require_once ($page_dir.$page_object->classe.".class.php");
					
					try
					{
						if(class_exists($page_object->classe))
						{
							$instance = new $page_object->classe($page_object);
							
							if ($instance instanceof Page) 
							{
								$instance->titulo_pagina = $page_object->titulo_pagina;
							}
						}
						else
						{
							$instance = new PaginaEntrada($page_object);
						}
						
						return $instance;
					} catch (Exception $e)
					{
						return "Não foi possível carregar esta página porque a mesma não foi encontrada";
					}
				}
				else
				{
					return "Não foi possível carregar esta página porque a mesma não foi encontrada";
				}
			}
			else
			{
				require_once(dirname(__FILE__)."../../gui/PaginaEntrada.class.php");
				//return "Não foi possível carregar esta página porque nenhuma configuração foi encontrada";
				$instance = new PaginaEntrada(new stdClass());
				return $instance;
			}
		}
	}
?>